package cn.caplike.demo.repository.design.pattern.proxy.cglib.extend;

import net.sf.cglib.proxy.CallbackFilter;

import java.lang.reflect.Method;

/**
 * 简介：回调方法过滤
 *
 * @author 李珂 2018年5月8日 上午11:23:59
 */
public class TargetCallbackFilter implements CallbackFilter {

	/**
	 * 简介：过滤方法
	 *
	 * @return 返回的值为数字，代表了 Callback 数组中的索引位置，要到用的 Callback
	 */
	@Override
	public int accept(Method method) {
		final String methodName = method.getName();
		System.out.println(methodName);
		switch (methodName) {
			case "noOpCall":
				return 0;
			case "interceptCall":
				return 1;
			case "fixedValueCall":
				return 2;
			default:
				System.out.println("未能被过滤到的方法: " + methodName);
				return 0;
		}
	}

}
